part of 'page.dart';

class _SigningInPageTranslation {
  static final delegate = _SigningInPageTranslationDelegate();

  static _SigningInPageTranslation of(BuildContext context) {
    return Localizations.of(context, _SigningInPageTranslation);
  }

  late String _languageCode;

  Future<void> load(Locale locale) async {
    _languageCode = locale.languageCode;
  }

  String _resolve(Map<String, String> translations) {
    return translations[_languageCode]!;
  }

  String get title {
    return _resolve(const {
      'ru': 'Вход',
      'en': 'Signing in',
    });
  }

  String get emailTextFieldPlaceholder {
    return _resolve(const {
      'ru': 'Электронная почта',
      'en': 'Email',
    });
  }

  String get passwordTextFieldPlaceholder {
    return _resolve(const {
      'ru': 'Пароль',
      'en': 'Password',
    });
  }

  String get signingInButtonTitle {
    return _resolve(const {
      'ru': 'Войти',
      'en': 'Sign in',
    });
  }

  String get emailValidationErrorText {
    return _resolve(const {
      'ru': 'Неверный формат электронной почты.',
      'en': 'Email format is invalid.',
    });
  }

  String get emptyPasswordValidationErrorText {
    return _resolve(const {
      'ru': 'Пароль не должен быть пустым.',
      'en': 'The password must not be empty..',
    });
  }

  String get wrongEmailOrPasswordFailureText {
    return _resolve(const {
      'ru': 'Пользователь с такой электронной почтой и паролем не найден.',
      'en': "The user with this email and password wasn't found.",
    });
  }

  String get serverFailureText {
    return _resolve(const {
      'ru': 'Что-то пошло не так. Попробуй ещё раз позже.',
      'en': 'Something went wrong. Try again later.',
    });
  }

  String get networkFailureText {
    return _resolve(const {
      'ru': 'Ошибка соединения. Проверь своё интернет подключение и попробуй ещё раз.',
      'en': 'Connection error. Check your internet connection and try again.',
    });
  }
}

class _SigningInPageTranslationDelegate extends LocalizationsDelegate<_SigningInPageTranslation> {
  @override
  bool isSupported(Locale locale) => const ['ru', 'en'].contains(locale.languageCode);

  @override
  bool shouldReload(LocalizationsDelegate<_SigningInPageTranslation> old) => false;

  @override
  Future<_SigningInPageTranslation> load(Locale locale) async {
    final translation = _SigningInPageTranslation();
    await translation.load(locale);
    return translation;
  }
}
